package com.ruoyi.common.constant;

/**
 * 缓存的key 常量
 * 
 * @author ruoyi
 */
public class CacheConstants
{
    /**
     * 登录用户 redis key
     */
    public static final String LOGIN_TOKEN_KEY = "login_tokens:";

    /**
     * 验证码 redis key
     */
    public static final String CAPTCHA_CODE_KEY = "captcha_codes:";

    /**
     * 参数管理 cache key
     */
    public static final String SYS_CONFIG_KEY = "sys_config:";

    /**
     * 字典管理 cache key
     */
    public static final String SYS_DICT_KEY = "sys_dict:";

    /**
     * 防重提交 redis key
     */
    public static final String REPEAT_SUBMIT_KEY = "repeat_submit:";

    /**
     * 限流 redis key
     */
    public static final String RATE_LIMIT_KEY = "rate_limit:";

    /**
     * 登录账户密码错误次数 redis key
     */
    public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";


    /**
     * 缓存项目根目录
     */
    public static final String PROJECT_ROOT_PATH = "project_root_path";
    /**
     * 用户会话当前消息列表   使用zset数据结构
     *  具体值：user:sessionId:curMsgs:{接收者ID}:{sessionId}   value：List<String> messageIds   score：当前消息发送的时间戳
     */
    public static final String USER_SESSION_CUR_MSG_LIST = "user:sessionId:curMsgs:{接收者ID}:{sessionId}";
    /**
     * 消息信息
     *  具体值： key: msg:{messageId}   value:messageVO
     */
    public static final String MSG_KEY = "msg:";
    /**
     * 消息信息
     *  具体值： key: msg:v1:{messageId}   value:messageVO
     */
    public static final String MSG_V1_KEY = "msg:v1:";
//    /**
//     * 消息信息
//     *  具体值： key: msg:v2:{messageId}   value:messageVO
//     */
//    public static final String MSG_V2_KEY = "msg:v2:";
//    /**
//     * 消息版本号
//     *  具体值：key：msg:version  value：int  1表示v1  2表示v2
//     */
//    public static final String MSG_VERSION = "msg:version";
    /**
     * 用户未读消息列表
     *  具体值set： key: user:sessionId:unreadList:{接收者ID}:{sessionId}   value:List<String> messageIds
     */
    public static final String USER_UNREAD_LIST = "user:sessionId:unreadList:{接收者ID}:{sessionId}";
    /**
     * 用户当前所处会话信息
     *  具体值：key：user:cur:session:{userId}  filed:sessionId  value：boolean  true表示在会话中  false表示不在会话中
     */
    public static final String USER_CUR_SESSION = "user:cur:session:";
    /**
     * 当前在线用户
     *  具体值：key：user:online  filed::userId   value：session
     */
    public static final String USER_ONLINE = "user:online";
    /**
     * 用户同步操作锁
     */
    public static final String LOCK_MSG_SYNC = "lock:msg:sync:";
    /**
     * 用户未读消息版本号  用于确保 “设置已读” 操作仅在消息未被同步接口删除时生效。
     *  具体值：key：unread:msg:version:{userId} value：session
     */
    public static final String UNREAD_MSG_VERSION = "unread:msg:version:";
    /**
     * 消息列表操作版本号
     *  具体值：key：sync:ops:version    value：Integer
     */
    public static final String SYNC_OPS_VERSION = "sync:ops:version";


}
